package cn.iocoder.yudao.module.crossborder.order.controller.admin.orderpayment.vo;

import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 跨境电商订单支付分页 Request VO")
@Data
public class OrderPaymentPageReqVO extends PageParam {

    @Schema(description = "订单编号", example = "22463")
    private Long orderId;

    @Schema(description = "订单号")
    private String orderNo;

    @Schema(description = "支付单号")
    private String paymentNo;

    @Schema(description = "平台支付ID", example = "29234")
    private String platformPaymentId;

    @Schema(description = "支付方式")
    private String paymentMethod;

    @Schema(description = "支付渠道")
    private String paymentChannel;

    @Schema(description = "支付服务商")
    private String paymentProvider;

    @Schema(description = "支付类型（1全额支付 2部分支付 3分期支付）", example = "2")
    private Integer paymentType;

    @Schema(description = "支付金额")
    private BigDecimal paymentAmount;

    @Schema(description = "支付货币")
    private String currencyCode;

    @Schema(description = "汇率")
    private BigDecimal exchangeRate;

    @Schema(description = "基础货币金额")
    private BigDecimal baseAmount;

    @Schema(description = "手续费")
    private BigDecimal feeAmount;

    @Schema(description = "网关费用")
    private BigDecimal gatewayFee;

    @Schema(description = "处理费用")
    private BigDecimal processingFee;

    @Schema(description = "净收金额")
    private BigDecimal netAmount;

    @Schema(description = "支付状态（10待支付 20支付中 30支付成功 40支付失败 50已退款 60部分退款）", example = "2")
    private Integer paymentStatus;

    @Schema(description = "交易ID", example = "28482")
    private String transactionId;

    @Schema(description = "授权码")
    private String authorizationCode;

    @Schema(description = "参考号")
    private String referenceNo;

    @Schema(description = "支付时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] paymentTime;

    @Schema(description = "过期时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] expireTime;

    @Schema(description = "回调时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] callbackTime;

    @Schema(description = "回调数据JSON")
    private String callbackData;

    @Schema(description = "风险评分")
    private BigDecimal riskScore;

    @Schema(description = "风险等级（1低 2中 3高）")
    private Integer riskLevel;

    @Schema(description = "反欺诈检查结果JSON")
    private String fraudCheckResult;

    @Schema(description = "支付信息JSON")
    private String paymentInfo;

    @Schema(description = "错误代码")
    private String errorCode;

    @Schema(description = "错误信息")
    private String errorMessage;

    @Schema(description = "重试次数", example = "3177")
    private Integer retryCount;

    @Schema(description = "备注", example = "你猜")
    private String remark;

    @Schema(description = "创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] createTime;

}